home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 21 / Cream of the Crop 21 (Terry Blount) (October 1996).iso / windows / yg501w95.zip / YGREP.H < prev    next >
C/C++ Source or Header  |  1996-06-17  |  5KB  |  199 lines

  1. /*
  2. //    $Id: ygrep.h 1.12 1996/06/17 22:01:30 Y.Roumazeilles Exp Y.Roumazeilles $
  3. //
  4. //    (C) 1992-93-94-95-96 Yves Roumazeilles
  5. //
  6. //      Version 5.0
  7. */
  8.  
  9. #ifndef    __YGREP_H__
  10. #define    __YGREP_H__    
  11. #ifdef __cplusplus
  12. extern "C" {
  13. #endif
  14.  
  15.  
  16. #ifdef    WINVER
  17. #define    YGCALL    FAR PASCAL
  18. #else
  19. #define    YGCALL    
  20. #endif
  21.  
  22. WORD    YGCALL    YGrepVersion( void );
  23. BOOL    YGCALL    YGrepIsDebug( void );
  24. void    YGCALL    YGrepMessages( BOOL bMessagesAllowed );
  25.  
  26.  
  27.  
  28.  
  29. /* YGrep Search Engine Error Codes */
  30. #define AGERR_UNKNOWN_TYPE        -1
  31. #define AGERR_NO_ERROR            0
  32. #define AGERR_STATE            1
  33. #define AGERR_ALLOC_MEM            2
  34. #define AGERR_TOO_SHORT            3
  35. #define AGERR_TOO_LONG            4
  36. #define AGERR_NO_PREVIOUS        5
  37. #define AGERR_NO_PATTERN        6
  38.  
  39. #define RGERR_MUNGED_AUTO        20
  40. #define RGERR_MISS_BRACKET        25
  41. #define RGERR_EMPTY_ENCL        26
  42. #define RGERR_ILLEGAL_ENCL        27
  43. #define RGERR_TOO_MANY_PAR        28
  44. #define RGERR_NULL_IN_PAR        29
  45. #define RGERR_UNMATCHED            30
  46. #define RGERR_NULL_IN_CRO        31
  47. #define RGERR_CYCLICAL_REF        32
  48. #define RGERR_UNDETERM_REF        33
  49. #define RGERR_UNMATCHED_PAR        34
  50.  
  51. #define    MATCH        0
  52. #define    MISMATCH    1
  53. #define    EXACTMATCH    2
  54. #define    MAXSYM        256    /* Size of the alphabet (in chars) */
  55. #define    WORD_SIZE    512    /* (in bits) */
  56. #define MAXTAG        10
  57.  
  58. #include    "bitlist.h"
  59.  
  60. typedef struct tagAGrepInfo {
  61.     int    iErrorCode;
  62.     char    cPat[WORD_SIZE];
  63.     LPSTR    TagStart[MAXTAG];
  64.     LPSTR    TagEnd[MAXTAG];
  65.     int    bMatchCase;
  66.     int    bMessages;
  67.     BLIST    uMask;        /* internal structures */
  68.     BLIST    uOvMask;
  69.     BLIST    uLimit;
  70.     BLIST    blState;    /* temporary AGrep() structures */
  71.     BLIST    blOverflow;
  72.     BLIST    blTemp;
  73.     BLIST    uTable[MAXSYM];    /* characteristic vector table */
  74.     int    iBitsPerState;
  75.     int    iWordSize;    /* actual word size of BLIST's */
  76.     int    iType;        /* MATCH or MISMATCH */
  77.     char    cUPat[WORD_SIZE];
  78. } AGREPINFO;
  79. #ifdef    WINVER
  80. typedef    AGREPINFO*    PAGREPINFO;
  81. typedef    AGREPINFO FAR*    LPAGREPINFO;
  82. #else
  83. typedef    AGREPINFO*    PAGREPINFO;
  84. typedef    AGREPINFO*    LPAGREPINFO;
  85. #endif
  86.  
  87. int    YGCALL    CompileAGrep( LPCSTR GrepString, int k, BOOL bMatchCase, LPAGREPINFO pGI );
  88. int    YGCALL    AGrep( LPCSTR StringToSearch, LPAGREPINFO pGI );
  89. int    YGCALL    AGrepInit( LPAGREPINFO pGI );
  90. int    YGCALL    AGrepEmpty( LPAGREPINFO pGI );
  91. int    YGCALL    AGrepSubsBuild( LPSTR lpszPattern, LPSTR lpszDest, int iSize, LPAGREPINFO pGI );
  92. int    YGCALL    AGrepSubstitute( LPSTR SearchedString, LPSTR lpszPattern, LPSTR lpszDest, int iSize, LPAGREPINFO pGI );
  93. int    YGCALL    SCompileAGrep( LPCSTR GrepString, int k, BOOL bMatchCase );
  94. int    YGCALL    SAGrep( LPCSTR StringToSearch );
  95. int    YGCALL    SAGrepInit( void );
  96. int    YGCALL    SAGrepEmpty( void );
  97. int    YGCALL    SAGrepSubsBuild( LPSTR lpszPattern, LPSTR lpszDest, int iSize );
  98. int    YGCALL    SAGrepSubstitute( LPSTR SearchedString, LPSTR lpszPattern, LPSTR lpszDest, int iSize );
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105. #define    MAXDFA    2*WORD_SIZE
  106.  
  107. typedef struct tagRGrepInfo {
  108.     int    iErrorCode;
  109.     char    cPat[WORD_SIZE];
  110.     LPSTR    TagStart[MAXTAG];
  111.     LPSTR    TagEnd[MAXTAG];
  112.     int    bMatchCase;
  113.     int    bMessages;
  114.     int    iCircf;        /* internal structures */
  115.     char    cDFA[MAXDFA];
  116. } RGREPINFO;
  117. #ifdef    WINVER
  118. typedef    RGREPINFO*    PRGREPINFO;
  119. typedef    RGREPINFO FAR*    LPRGREPINFO;
  120. #else
  121. typedef    RGREPINFO*    PRGREPINFO;
  122. typedef    RGREPINFO*    LPRGREPINFO;
  123. #endif
  124.  
  125. int    YGCALL    CompileRGrep( LPCSTR GrepString, BOOL bMatchCase, LPRGREPINFO pGI );
  126. int    YGCALL    RGrep( LPCSTR StringToSearch, LPRGREPINFO pGI );
  127. int    YGCALL    RGrepSubsBuild( LPSTR lpszPattern, LPSTR lpszDest, int iSize, LPRGREPINFO pGI );
  128. int    YGCALL    RGrepSubstitute( LPSTR SearchedString, LPSTR lpszPattern, LPSTR lpszDest, int iSize, LPRGREPINFO pGI );
  129. void    YGCALL    InitWordCharTable( void );
  130. void    YGCALL    AddWordChar( LPSTR s );
  131. void    YGCALL    RemoveWordChar( LPSTR s );
  132. int    YGCALL    SCompileRGrep( LPCSTR GrepString, BOOL bMatchCase );
  133. int    YGCALL    SRGrep( LPCSTR StringToSearch );
  134. int    YGCALL    SRGrepSubsBuild( LPSTR lpszPattern, LPSTR lpszDest, int iSize );
  135. int    YGCALL    SRGrepSubstitute( LPSTR SearchedString, LPSTR lpszPattern, LPSTR lpszDest, int iSize );
  136.  
  137.  
  138.  
  139.  
  140.  
  141. #define    OP_NOP    0
  142. #define    OP_NOT    1
  143. #define    OP_AND    2
  144. #define    OP_OR    3
  145. #define    OP_NAND    4
  146. #define    OP_NOR    5
  147. #define    OP_ADD    6
  148. #define    OP_SUB    7
  149. #define    OP_UCMP    8
  150. #define    OP_BAND    9
  151. #define    OP_BOR    10
  152. #define    OP_BXOR    11
  153. #define    OP_BNAND    12
  154. #define    OP_BNOR    13
  155.  
  156. typedef    struct tagYGrepInfo {
  157.     union {
  158.         int        opI;    /* One of OP_* values */
  159.         AGREPINFO    aGI;
  160.         RGREPINFO    rGI;
  161.     } info;
  162. #ifdef    WINVER
  163.     struct tagYGrepInfo FAR*    pInfo;
  164. #else
  165.     struct tagYGrepInfo *       pInfo;
  166. #endif
  167.     int    iTypeOfInfo;    /* One of IT_* values */
  168. } YGREPINFO;
  169. #ifdef    WINVER
  170. typedef    YGREPINFO*    PYGREPINFO;
  171. typedef    YGREPINFO FAR*    LPYGREPINFO;
  172. #else
  173. typedef    YGREPINFO*    PYGREPINFO;
  174. typedef    YGREPINFO*    LPYGREPINFO;
  175. #endif
  176.  
  177. #define    IT_NONE    -1
  178. #define    IT_OP    0
  179. #define    IT_AG    1
  180. #define    IT_RG    2
  181.  
  182. int    YGCALL    PushYInfo( LPYGREPINFO pGI );
  183. int    YGCALL    YGrep( LPCSTR StringToSearch );
  184.  
  185.  
  186.  
  187. void    YGCALL    SFileSetFlags( BOOL bPrintFileName, BOOL bPrintBlockNumber, BOOL bPrintLineNumber, BOOL bCountsOnly, BOOL bNonMatching );
  188. BOOL    YGCALL    SFileOpen( LPCSTR strFileName );
  189. LPSTR    YGCALL    SFileAGrep();
  190. LPSTR    YGCALL    SFileRGrep();
  191. long    YGCALL    SFileClose();
  192.  
  193.  
  194.  
  195. #ifdef __cplusplus
  196. } /* extern "C" */
  197. #endif
  198. #endif    /* __YGREP_H__ */
  199.